package algorithm.arithmetic.求最小总开销;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author xinchen by 2016/11/25
 * @version 1.0
 */
public class Solution {
    // 有N(N≤5000)个数的集合A，每次可以从集合A中删除两个数，然后把他们的和放回集合，
    // 直到剩下一个数。每次操作的开销等于删除的两个数的和，求最小总开销。所有数均小于100000。
    public static void main(String[] args) {
        List<Long> list = new ArrayList<Long>();
        for (String num : args) {
            list.add(Long.valueOf(num));
        }
        long sum = 0;
        while (list.size() > 1) {
            Collections.sort(list);
            Long num0 = list.get(0);
            list.remove(0);
            Long num1 = list.get(0);
            list.remove(0);
            sum += num0 + num1;
            list.add(num0 + num1);
        }
        System.out.println(sum);
    }
}
